package com.cn.boot.student.controller.student.daily;

import com.cn.boot.student.entity.DailyEntity;
import com.cn.boot.student.entity.UserEntity;
import com.cn.boot.student.service.daily.IDailyService;
import com.cn.boot.student.util.CommonResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/***
 * 日报管理控制器
 */
@RestController
@Api(tags = "日报管理")
@RequestMapping("/admin/daily")
public class DailyController {
    @Autowired
    private IDailyService iDailyService;
    /**
     * 日报列表,查询所有日报（需要相应的角色拥有查询权限才能查询）
     * 查询，分页
     */
    @PostMapping("/findAll")
    @PreAuthorize("hasAuthority('sys:daily:read')")
    @ApiOperation(value = "日报列表")
    public CommonResult findAll(DailyEntity dailyEntity){
        return iDailyService.findAll(dailyEntity);
    }
    /**
     * 我的日报列表（不需要权限，所有用户都能查询）
     * 查询，分页
     */
    @PostMapping("/findMyDailies")
    @ApiOperation(value = "日报列表")
    public CommonResult findMyDailies(DailyEntity dailyEntity){
        return iDailyService.findMyDailies(dailyEntity);
    }
    /**
     * 根据id查询日报
     */
    @PostMapping("/findById")
//    @PreAuthorize("hasAuthority('sys:daily:read')")
    @ApiOperation(value = "根据id查询日报")
    public CommonResult findById(@RequestParam Integer id){
        return iDailyService.findById(id);
    }
    /**
     * 添加日报
     */
    @PostMapping("/add")
    @ApiOperation(value = "添加日报")
    public CommonResult add(DailyEntity dailyEntity){
        return iDailyService.add(dailyEntity);
    }
    /**
     * 更新日报
     */
    @PostMapping("/update")
//    @PreAuthorize("hasAuthority('sys:daily:update')")
    @ApiOperation(value = "更新日报")
    public CommonResult update(DailyEntity dailyEntity){
        return iDailyService.update(dailyEntity);
    }

    /**
     * 检查日报（班主任，教练才能有权限检查）
     */
    /**
     * 删除日报
     */
    @PostMapping("/del")
//    @PreAuthorize("hasAuthority('sys:daily:del')")
    @ApiOperation(value = "删除日报")
    public CommonResult del(@RequestParam Integer id){
        return iDailyService.del(id);
    }
    /**
     * 批量删除
     */
    @PostMapping("/dels")
//    @PreAuthorize("hasAuthority('sys:daily:del')")
    @ApiOperation(value = "删除日报")
    public CommonResult dels(@RequestParam List<Integer> ids){
        return iDailyService.dels(ids);
    }

    /**
     * 生成今日未提交和已提交日报的学员名单，
     * 班主任或者教练可查看今日提交日报名单情况
     */
    @PostMapping("/getStudent")
    @PreAuthorize("hasAuthority('sys:daily:student:list')")
    @ApiOperation(value = "学员名单")
    public CommonResult getStudent(UserEntity userEntity){
        return iDailyService.getStudent(userEntity);
    }

    /**
     * 下载日报生成word文档
     */
    @PostMapping("/download")
    @ApiOperation(value = "下载日报为word文档")
    public CommonResult download(DailyEntity dailyEntity){
        return iDailyService.download(dailyEntity);
    }
}
